0 CpxTRS
↳1 TrsToWeightedTrsProof (BOTH BOUNDS(ID, ID), 0 ms)
↳2 CpxWeightedTrs
↳3 TypeInferenceProof (BOTH BOUNDS(ID, ID), 0 ms)
↳4 CpxTypedWeightedTrs
↳5 CompletionProof (UPPER BOUND(ID), 0 ms)
↳6 CpxTypedWeightedCompleteTrs
↳7 NarrowingProof (BOTH BOUNDS(ID, ID), 0 ms)
↳8 CpxTypedWeightedCompleteTrs
↳9 CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID), 0 ms)
↳10 CpxRNTS
↳11 InliningProof (UPPER BOUND(ID), 0 ms)
↳12 CpxRNTS
↳13 SimplificationProof (BOTH BOUNDS(ID, ID), 0 ms)
↳14 CpxRNTS
↳15 CpxRntsAnalysisOrderProof (BOTH BOUNDS(ID, ID), 2 ms)
↳16 CpxRNTS
↳17 IntTrsBoundProof (UPPER BOUND(ID), 518 ms)
↳18 CpxRNTS
↳19 IntTrsBoundProof (UPPER BOUND(ID), 127 ms)
↳20 CpxRNTS
↳21 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳22 CpxRNTS
↳23 IntTrsBoundProof (UPPER BOUND(ID), 180 ms)
↳24 CpxRNTS
↳25 IntTrsBoundProof (UPPER BOUND(ID), 64 ms)
↳26 CpxRNTS
↳27 FinalProof (⇔, 0 ms)
↳28 BOUNDS(1, n^1)
sum(0) → 0
sum(s(x)) → +(sqr(s(x)), sum(x))
sqr(x) → *(x, x)
sum(s(x)) → +(*(s(x), s(x)), sum(x))
sum(0) → 0 [1]
sum(s(x)) → +(sqr(s(x)), sum(x)) [1]
sqr(x) → *(x, x) [1]
sum(s(x)) → +(*(s(x), s(x)), sum(x)) [1]
sum(0) → 0 [1]
sum(s(x)) → +(sqr(s(x)), sum(x)) [1]
sqr(x) → *(x, x) [1]
sum(s(x)) → +(*(s(x), s(x)), sum(x)) [1]
sum :: 0:s:+ → 0:s:+ 0 :: 0:s:+ s :: 0:s:+ → 0:s:+ + :: * → 0:s:+ → 0:s:+ sqr :: 0:s:+ → * * :: 0:s:+ → 0:s:+ → * |
(a) The obligation is a constructor system where every type has a constant constructor,
(b) The following defined symbols do not have to be completely defined, as they can never occur inside other defined symbols:
sum
sqr
const
Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules:
The TRS has the following type information:
Rewrite Strategy: INNERMOST |
Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules:
The TRS has the following type information:
Rewrite Strategy: INNERMOST |
0 => 0
const => 0
sqr(z) -{ 1 }→ 1 + x + x :|: x >= 0, z = x
sum(z) -{ 1 }→ 0 :|: z = 0
sum(z) -{ 1 }→ 1 + sqr(1 + x) + sum(x) :|: x >= 0, z = 1 + x
sum(z) -{ 1 }→ 1 + (1 + (1 + x) + (1 + x)) + sum(x) :|: x >= 0, z = 1 + x
sqr(z) -{ 1 }→ 1 + x + x :|: x >= 0, z = x
sqr(z) -{ 1 }→ 1 + x + x :|: x >= 0, z = x
sum(z) -{ 1 }→ 0 :|: z = 0
sum(z) -{ 2 }→ 1 + (1 + x' + x') + sum(x) :|: x >= 0, z = 1 + x, x' >= 0, 1 + x = x'
sum(z) -{ 1 }→ 1 + (1 + (1 + x) + (1 + x)) + sum(x) :|: x >= 0, z = 1 + x
sqr(z) -{ 1 }→ 1 + z + z :|: z >= 0
sum(z) -{ 1 }→ 0 :|: z = 0
sum(z) -{ 2 }→ 1 + (1 + x' + x') + sum(z - 1) :|: z - 1 >= 0, x' >= 0, 1 + (z - 1) = x'
sum(z) -{ 1 }→ 1 + (1 + (1 + (z - 1)) + (1 + (z - 1))) + sum(z - 1) :|: z - 1 >= 0
{ sum } { sqr } |
sqr(z) -{ 1 }→ 1 + z + z :|: z >= 0
sum(z) -{ 1 }→ 0 :|: z = 0
sum(z) -{ 2 }→ 1 + (1 + x' + x') + sum(z - 1) :|: z - 1 >= 0, x' >= 0, 1 + (z - 1) = x'
sum(z) -{ 1 }→ 1 + (1 + (1 + (z - 1)) + (1 + (z - 1))) + sum(z - 1) :|: z - 1 >= 0
sqr(z) -{ 1 }→ 1 + z + z :|: z >= 0
sum(z) -{ 1 }→ 0 :|: z = 0
sum(z) -{ 2 }→ 1 + (1 + x' + x') + sum(z - 1) :|: z - 1 >= 0, x' >= 0, 1 + (z - 1) = x'
sum(z) -{ 1 }→ 1 + (1 + (1 + (z - 1)) + (1 + (z - 1))) + sum(z - 1) :|: z - 1 >= 0
sum: runtime: ?, size: O(n2) [2·z + 2·z2] |
sqr(z) -{ 1 }→ 1 + z + z :|: z >= 0
sum(z) -{ 1 }→ 0 :|: z = 0
sum(z) -{ 2 }→ 1 + (1 + x' + x') + sum(z - 1) :|: z - 1 >= 0, x' >= 0, 1 + (z - 1) = x'
sum(z) -{ 1 }→ 1 + (1 + (1 + (z - 1)) + (1 + (z - 1))) + sum(z - 1) :|: z - 1 >= 0
sum: runtime: O(n1) [1 + 2·z], size: O(n2) [2·z + 2·z2] |
sqr(z) -{ 1 }→ 1 + z + z :|: z >= 0
sum(z) -{ 1 }→ 0 :|: z = 0
sum(z) -{ 1 + 2·z }→ 1 + (1 + x' + x') + s' :|: s' >= 0, s' <= 2 * ((z - 1) * (z - 1)) + 2 * (z - 1), z - 1 >= 0, x' >= 0, 1 + (z - 1) = x'
sum(z) -{ 2·z }→ 1 + (1 + (1 + (z - 1)) + (1 + (z - 1))) + s :|: s >= 0, s <= 2 * ((z - 1) * (z - 1)) + 2 * (z - 1), z - 1 >= 0
sum: runtime: O(n1) [1 + 2·z], size: O(n2) [2·z + 2·z2] |
sqr(z) -{ 1 }→ 1 + z + z :|: z >= 0
sum(z) -{ 1 }→ 0 :|: z = 0
sum(z) -{ 1 + 2·z }→ 1 + (1 + x' + x') + s' :|: s' >= 0, s' <= 2 * ((z - 1) * (z - 1)) + 2 * (z - 1), z - 1 >= 0, x' >= 0, 1 + (z - 1) = x'
sum(z) -{ 2·z }→ 1 + (1 + (1 + (z - 1)) + (1 + (z - 1))) + s :|: s >= 0, s <= 2 * ((z - 1) * (z - 1)) + 2 * (z - 1), z - 1 >= 0
sum: runtime: O(n1) [1 + 2·z], size: O(n2) [2·z + 2·z2] sqr: runtime: ?, size: O(n1) [1 + 2·z] |
sqr(z) -{ 1 }→ 1 + z + z :|: z >= 0
sum(z) -{ 1 }→ 0 :|: z = 0
sum(z) -{ 1 + 2·z }→ 1 + (1 + x' + x') + s' :|: s' >= 0, s' <= 2 * ((z - 1) * (z - 1)) + 2 * (z - 1), z - 1 >= 0, x' >= 0, 1 + (z - 1) = x'
sum(z) -{ 2·z }→ 1 + (1 + (1 + (z - 1)) + (1 + (z - 1))) + s :|: s >= 0, s <= 2 * ((z - 1) * (z - 1)) + 2 * (z - 1), z - 1 >= 0
sum: runtime: O(n1) [1 + 2·z], size: O(n2) [2·z + 2·z2] sqr: runtime: O(1) [1], size: O(n1) [1 + 2·z] |